What is @turf/flatten?
@turf/flatten is a module in the Turf.js library that is used to flatten any GeoJSON object into a FeatureCollection. This is particularly useful when dealing with complex nested geometries and you need to simplify them into a flat structure.
What are @turf/flatten's main functionalities?
Flattening a MultiPolygon
This code demonstrates how to flatten a MultiPolygon into a FeatureCollection of Polygons. The input is a MultiPolygon, and the output is a FeatureCollection with each Polygon as a separate feature.
const turf = require('@turf/turf');
const multiPolygon = turf.multiPolygon([[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], [[[20, 20], [30, 20], [30, 30], [20, 30], [20, 20]]]]);
const flattened = turf.flatten(multiPolygon);
console.log(flattened);
Flattening a MultiLineString
This code demonstrates how to flatten a MultiLineString into a FeatureCollection of LineStrings. The input is a MultiLineString, and the output is a FeatureCollection with each LineString as a separate feature.
const turf = require('@turf/turf');
const multiLineString = turf.multiLineString([[[0, 0], [10, 10]], [[20, 20], [30, 30]]]);
const flattened = turf.flatten(multiLineString);
console.log(flattened);
Flattening a GeometryCollection
This code demonstrates how to flatten a GeometryCollection into a FeatureCollection of individual geometries. The input is a GeometryCollection, and the output is a FeatureCollection with each geometry as a separate feature.
const turf = require('@turf/turf');
const geometryCollection = turf.geometryCollection([
turf.point([0, 0]),
turf.lineString([[10, 10], [20, 20]]),
turf.polygon([[[30, 30], [40, 40], [50, 50], [30, 30]]])
]);
const flattened = turf.flatten(geometryCollection);
console.log(flattened);
Other packages similar to @turf/flatten
geojson-flatten
The geojson-flatten package provides similar functionality to @turf/flatten by flattening nested GeoJSON objects into simpler structures. It is a lightweight alternative but does not offer the extensive suite of geospatial analysis tools that Turf.js provides.
geojson-utils
The geojson-utils package offers various utilities for working with GeoJSON data, including flattening nested structures. While it provides some similar functionalities, it is more of a general-purpose toolkit for GeoJSON manipulation rather than a specialized library like Turf.js.
@turf/flatten
flatten
Flattens any GeoJSON to a FeatureCollection inspired by geojson-flatten.
Parameters
Examples
var multiGeometry = turf.multiPolygon([
[[[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]]],
[[[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]],
[[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]]
]);
var flatten = turf.flatten(multiGeometry);
var addToMap = [flatten]
Returns FeatureCollection<any> all Multi-Geometries are flattened into single Features
This module is part of the Turfjs project, an open source
module collection dedicated to geographic algorithms. It is maintained in the
Turfjs/turf repository, where you can create
PRs and issues.
Installation
Install this module individually:
$ npm install @turf/flatten
Or install the Turf module that includes it as a function:
$ npm install @turf/turf